package com.sgb.kjwl.viewmodel.transport;

import android.app.Application;
import android.content.Context;
import android.text.TextUtils;

import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;

import com.amap.api.maps.AMapUtils;
import com.amap.api.maps.model.LatLng;
import com.sgb.kjwl.R;
import com.sgb.kjwl.model.entity.transport.OperateGoodsSourcePlaceVO;
import com.sgb.kjwl.model.entity.transport.common.AddressItem;
import com.sgb.kjwl.utils.LocationUtil;
import com.sgb.kjwl.utils.NumberUtil;
import com.swgk.core.util.SharedPreferenceUtil;

import java.util.List;

/**
 * @author: 杨畔
 * @date: 3/8/21 2:41 PM
 * @Description: 装卸地位置
 */
public class LoadingAndUnloadingPlaceViewModel extends AndroidViewModel {
    public LoadingAndUnloadingPlaceViewModel(@NonNull Application application) {
        super(application);
    }

    /**
     * 同步装卸信息
     */
    public void syncLoadingData(Context context, String loadMode, OperateGoodsSourcePlaceVO entity, List<AddressItem> list) {
        if (entity == null || TextUtils.isEmpty(loadMode)) return;
        //
        list.clear();
        switch (loadMode) {
            case "11"://一装一卸
                list.add(new AddressItem(0,
                        String.format("%s %s %s", entity.getProvinceName(), entity.getCityName(), entity.getDistrictName()),
                        entity.getDetailAddress(),
                        entity.getLatitude(), entity.getLongitude(),
                        R.mipmap.icon_load_goods, R.mipmap.icon_samll_handle, R.mipmap.icon_big_handle));
                list.add(new AddressItem(1,
                        String.format("%s %s %s", entity.getDestProvinceName(), entity.getDestCityName(), entity.getDestDistrictName()),
                        entity.getDestDetailAddress(),
                        entity.getDestLatitude(), entity.getDestLongitude(),
                        R.mipmap.icon_unload_goods, R.mipmap.icon_unload, R.mipmap.icon_big_unload));
                break;
            case "12"://一装两卸
                list.add(new AddressItem(0,
                        String.format("%s %s %s", entity.getProvinceName(), entity.getCityName(), entity.getDistrictName()),
                        entity.getDetailAddress(),
                        entity.getLatitude(), entity.getLongitude(),
                        R.mipmap.icon_load_goods, R.mipmap.icon_samll_handle, R.mipmap.icon_big_handle));
                list.add(new AddressItem(1,
                        String.format("%s %s %s", entity.getViaDestProvinceName(), entity.getViaDestCityName(), entity.getViaDestDistrictName()),
                        entity.getViaDestDetailAddress(),
                        entity.getViaDestLatitude(), entity.getViaDestLongitude(),
                        R.mipmap.icon_unload_one, R.mipmap.icon_unload1, R.mipmap.icon_big_unload1));
                list.add(new AddressItem(2,
                        String.format("%s %s %s", entity.getDestProvinceName(), entity.getDestCityName(), entity.getDestDistrictName()),
                        entity.getDestDetailAddress(),
                        entity.getDestLatitude(), entity.getDestLongitude(),
                        R.mipmap.icon_unload_two, R.mipmap.icon_unload2, R.mipmap.icon_big_unload2));
                break;
            case "21"://两装一卸
                list.add(new AddressItem(0,
                        String.format("%s %s %s", entity.getProvinceName(), entity.getCityName(), entity.getDistrictName()),
                        entity.getDetailAddress(),
                        entity.getLatitude(), entity.getLongitude(),
                        R.mipmap.icon_load_one, R.mipmap.icon_samll_handle1, R.mipmap.icon_big_handle1));
                list.add(new AddressItem(1,
                        String.format("%s %s %s", entity.getViaSendProvinceName(), entity.getViaSendCityName(), entity.getViaSendDistrictName()),
                        entity.getViaSendDetailAddress(),
                        entity.getViaSendLatitude(), entity.getViaSendLongitude(),
                        R.mipmap.icon_load_two, R.mipmap.icon_samll_handle2, R.mipmap.icon_big_handle2));
                list.add(new AddressItem(2,
                        String.format("%s %s %s", entity.getDestProvinceName(), entity.getDestCityName(), entity.getDestDistrictName()),
                        entity.getDestDetailAddress(),
                        entity.getDestLatitude(), entity.getDestLongitude(),
                        R.mipmap.icon_unload_goods, R.mipmap.icon_unload, R.mipmap.icon_big_unload));
                break;
            case "22"://两装两卸
                list.add(new AddressItem(0,
                        String.format("%s %s %s", entity.getProvinceName(), entity.getCityName(), entity.getDistrictName()),
                        entity.getDetailAddress(),
                        entity.getLatitude(), entity.getLongitude(),
                        R.mipmap.icon_load_one, R.mipmap.icon_samll_handle1, R.mipmap.icon_big_handle1));
                list.add(new AddressItem(1,
                        String.format("%s %s %s", entity.getViaSendProvinceName(), entity.getViaSendCityName(), entity.getViaSendDistrictName()),
                        entity.getViaSendDetailAddress(),
                        entity.getViaSendLatitude(), entity.getViaSendLongitude(),
                        R.mipmap.icon_load_two, R.mipmap.icon_samll_handle2, R.mipmap.icon_big_handle2));
                list.add(new AddressItem(2,
                        String.format("%s %s %s", entity.getViaDestProvinceName(), entity.getViaDestCityName(), entity.getViaDestDistrictName()),
                        entity.getViaDestDetailAddress(),
                        entity.getViaDestLatitude(), entity.getViaDestLongitude(),
                        R.mipmap.icon_unload_one, R.mipmap.icon_unload1, R.mipmap.icon_big_unload1));
                list.add(new AddressItem(3,
                        String.format("%s %s %s", entity.getDestProvinceName(), entity.getDestCityName(), entity.getDestDistrictName()),
                        entity.getDestDetailAddress(),
                        entity.getDestLatitude(), entity.getDestLongitude(),
                        R.mipmap.icon_unload_two, R.mipmap.icon_unload2, R.mipmap.icon_big_unload2));
                break;
        }
        //计算距离
        if (LocationUtil.isOpenLocation(context)) {
            //设置经纬度
            double lat = NumberUtil.convertToDouble(SharedPreferenceUtil.getInstance().getString(SharedPreferenceUtil.LATITUDE_ID, "0"));
            double lng = NumberUtil.convertToDouble(SharedPreferenceUtil.getInstance().getString(SharedPreferenceUtil.LONGITUDE_ID, "0"));
            if (lat != 0 && lng != 0) {
                for (AddressItem item : list) {
                    //设置定位信息
                    LatLng current = new LatLng(lat, lng);
                    LatLng latLngLocation = new LatLng(item.getLatitude(), item.getLongitude());
                    String distance = NumberUtil.trim0(AMapUtils.calculateLineDistance(current, latLngLocation) / 1000);
                    item.setDistance(distance);
                }

            }
        }
    }
}
